﻿// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.

namespace Microsoft.AspNetCore.Razor.Language;

internal enum SyntaxKind : byte
{
    #region Nodes
    // Common
    RazorDocument,
    GenericBlock,
    RazorComment,
    RazorMetaCode,
    RazorDirective,
    RazorDirectiveBody,
    UnclassifiedTextLiteral,

    // Markup
    MarkupBlock,
    MarkupTransition,
    MarkupElement,
    MarkupStartTag,
    MarkupEndTag,
    MarkupTagBlock,
    MarkupTextLiteral,
    MarkupEphemeralTextLiteral,
    MarkupCommentBlock,
    MarkupAttributeBlock,
    MarkupMinimizedAttributeBlock,
    MarkupMiscAttributeContent,
    MarkupLiteralAttributeValue,
    MarkupDynamicAttributeValue,
    MarkupTagHelperElement,
    MarkupTagHelperStartTag,
    MarkupTagHelperEndTag,
    MarkupTagHelperAttribute,
    MarkupMinimizedTagHelperAttribute,
    MarkupTagHelperDirectiveAttribute,
    MarkupMinimizedTagHelperDirectiveAttribute,
    MarkupTagHelperAttributeValue,

    // CSharp
    CSharpStatement,
    CSharpStatementBody,
    CSharpExplicitExpression,
    CSharpExplicitExpressionBody,
    CSharpImplicitExpression,
    CSharpImplicitExpressionBody,
    CSharpCodeBlock,
    CSharpTemplateBlock,
    CSharpStatementLiteral,
    CSharpExpressionLiteral,
    CSharpEphemeralTextLiteral,
    CSharpTransition,
    #endregion

    #region Tokens
    // Common
    None,
    Marker,
    List,
    Whitespace,
    NewLine,
    Colon,
    QuestionMark,
    RightBracket,
    LeftBracket,
    Equals,
    Transition,

    // HTML
    Text,
    OpenAngle,
    Bang,
    ForwardSlash,
    DoubleHyphen,
    CloseAngle,
    DoubleQuote,
    SingleQuote,

    // CSharp literals
    Identifier,
    Keyword,
    IntegerLiteral,
    CSharpComment,
    RealLiteral,
    CharacterLiteral,
    StringLiteral,

    // CSharp operators
    Arrow,
    Minus,
    Decrement,
    MinusAssign,
    NotEqual,
    Not,
    Modulo,
    ModuloAssign,
    AndAssign,
    And,
    DoubleAnd,
    LeftParenthesis,
    RightParenthesis,
    Star,
    MultiplyAssign,
    Comma,
    Dot,
    Slash,
    DivideAssign,
    DoubleColon,
    Semicolon,
    NullCoalesce,
    XorAssign,
    Xor,
    LeftBrace,
    OrAssign,
    DoubleOr,
    Or,
    RightBrace,
    Tilde,
    Plus,
    PlusAssign,
    Increment,
    LessThan,
    LessThanEqual,
    LeftShift,
    LeftShiftAssign,
    Assign,
    GreaterThan,
    GreaterThanEqual,
    RightShift,
    RightShiftAssign,
    Hash,

    // Razor specific
    RazorCommentLiteral,
    RazorCommentStar,
    RazorCommentTransition,
    #endregion
}
